package com.agile.leetcode.concurrent.threadlocal;

/**
 * 斐波那契算法
 * 和爬楼梯思想一样
 *
 *
 * @Author KD
 * @Date 2021/1/14 13:43
 */
public class Fibonacci {
    public static void main(String[] args) {
        Fibonacci fibonacci = new Fibonacci();
        System.out.println(fibonacci.test(12));
        System.out.println(fibonacci.test2(12));
    }

    /**
     * 递归方式实现
     *
     * @param x
     * @return
     */
    public int test(int x) {
        if (x == 1 || x == 2) {
            return 1;
        }
        return test(x - 1) + test(x - 2);
    }

    /**
     * 数组的方式
     *
     * @param x
     * @return
     */
    public int test2(int x) {
        // 创建数组
        int[] array = new int[x + 1];
        array[0] = 1;
        array[1] = 1;
        for (int i = 2; i < x; i++) {
            array[i] = array[i - 1] + array[i - 2];
        }
        return array[x-1];
    }
}
